package ch02.t09;

/**
 * @author shun
 * @date 2022-10-21 21:18:13
 * @note 我之为也
 *  * 在一个停车场内，汽车、摩托车共停了 48 辆，其中每辆汽车有 4 个
 *  * 轮子，每辆摩托车有 3 个轮子，这些车共有 172 个轮子，编程输出停
 *  * 车场内有汽车和摩托车的数量。
 *
 */

import java.util.ArrayList;
import java.util.List;

public class Task01 {
    public static void main(String[] args) {
        Task01 t = new Task01();
        List<Vehicle> cars = t.findCarsByParameters(-48, 4, 3, 172);
        for (Vehicle car : cars) {
            System.out.println(car);
        }


    }

    /**
     * 方法描述:
     * @author: 黄后林
     * @date: 2022/10/19 11:31
     * @param cars  汽车、摩托车共停了 48 辆
     * @param w1  每辆汽车有 4 个 轮子
     * @param w2  每辆摩托车有 3 个轮子
     * @param w   这些车共有 172 个轮子
     * @return java.util.List<java.lang.Integer>
     */
    public List<Vehicle> findCarsByParameters (int cars, int w1,int w2,int w ){

        List<Vehicle> rs = new ArrayList();
        // 入参检测
        if(cars < 0 || w1<0 || w2<0 || w<0){
            return rs;
        }

        // 什么样的类型 可以输出2个数据? array list=推荐
        // 用循环语句实现
        for(int outer =1;outer<=cars;outer++){
            for(int inner =1 ;inner<=cars;inner++){
                if((outer+inner == cars) && ( w1*outer + w2*inner ==w )){
                    // 满足条足交
                    Vehicle v = new Vehicle();
                    v.setCar(outer);
                    v.setMotorcycle(inner);
                    rs.add(v);
                    // ? 还要继续找吗 ？  要继续1  不要继续0
                    // 因为只有1个解  所有可以写break 如果有多个答案 你们就不能写
                    break;
                }
            }
        }
        return rs;
    }

}
